package com.byd.sealmanage.driver;//package com.byd.investment.driver;
//
//import com.api.dao.mybatis.*;
//import com.api.modal.bo.TbInformationGrantVO;
//import com.api.modal.po.TbBoardInformation;
//import com.api.modal.po.TbGrant;
//import com.api.util.SendEmailUtil;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.scheduling.annotation.Async;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Component;
//import org.thymeleaf.TemplateEngine;
//
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.List;
//
///**
// * 定时执行发送邮件待发送表
// * */
//@Slf4j
//@Component
//public class TaskSend {
//
//    @Value("${email.host}")
//    private String host;
//
//    @Value("${email.username}")
//    private String username;
//
//    @Value("${email.password}")
//    private String password;
//
//    @Autowired
//    private TbBoardInformationMapper tbBoardInformationMapper;
//
//    @Autowired
//    private TbGrantMapper tbGrantMapper;
//
//    @Autowired
//    private TbUserMapper tbUserMapper;
//
//    @Autowired
//    private TbUserRoleMapper tbUserRoleMapper;
//
//    @Autowired
//    private TemplateEngine templateEngine;
//
//    @Autowired
//    private TbCrontabSendMapper tbCrontabSendMapper;
//
//    /**
//     * 定时更新，将过期的色板状态变为3
//     * 每天六点四十定时执行
//     */
//    @Async
////    @Scheduled(fixedRate = 10000)
//    @Scheduled(cron = "0 40 6 * * ?" )
//    public void updateToken(){
//        log.info("执行定时更新时间" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
//        // 查询出过期的色板
//        List<TbBoardInformation> overtimeBoard = tbBoardInformationMapper.selectOvertimeBoard();
//        // 循环色板列表进行更新
//        Integer timingResult = 0;
//        for(TbBoardInformation tbBoardInformation : overtimeBoard){
//            //更新色板信息表
//            tbBoardInformation.setState(3);
//            timingResult += tbBoardInformationMapper.updateByPrimaryKeySelective(tbBoardInformation);
//            //更新色板下发表
//            TbGrant tbGrant = new TbGrant();
//            tbGrant.setId(tbBoardInformation.getGrantId());
//            tbGrant.setState(3);
//            timingResult += tbGrantMapper.updateByPrimaryKeySelective(tbGrant);
//        }
//        //更新结果
//        if(timingResult == 0){
//            log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "：无过期色板需要更新");
//        }else{
//            log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "：过期色板更新完成");
//        }
//    }
//
//    /**
//     * 有效期剩余30天的邮件提醒
//     */
//    @Async
//    @Scheduled(cron = "0 50 6 * * ?" )
//    public void sendEmailThirtyToken(){
//        log.info("执行30天有效期色板邮箱提醒时间" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
//        //查询有效期还剩30天的色板
//        List<TbInformationGrantVO> thirtyBoard = tbBoardInformationMapper.selectThirtyBoard();
//        if(thirtyBoard.size() == 0){
//            log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "：无有效期剩余30天的色板需要更新");
//        }else{
//            SendEmailUtil.boardRemindEmail(thirtyBoard);
////                if(sendThirtyResult > 0){
////                    log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "：已成功通知有效期剩余30天的色板领取人");
////                }else{
////                    log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "：未能成功通知有效期剩余30天的色板领取人");
////                }
//            log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "：有效期剩余30天色板提醒任务结束");
//        }
//    }
//
//    /**
//     * 有效期剩余3天的邮件提醒
//     */
//    @Async
//    @Scheduled(cron = "0 0 7 * * ?" )
//    public void sendEmailThreeToken(){
//        log.info("执行3天有效期色板邮箱提醒时间" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
//        // 查询有效期还剩3天的色板
//        List<TbInformationGrantVO> sendThreeBoard = tbBoardInformationMapper.selectThreeBoard();
//        if(sendThreeBoard.size() == 0){
//            log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "：无有效期剩余三天的色板需要更新");
//        }else{
//            SendEmailUtil.boardRemindEmail(sendThreeBoard);
////                if(sendThreeResult > 0){
////                    log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "：已成功通知有效期剩余3天的色板领取人");
////                }else{
////                    log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "：未能成功通知有效期剩余3天的色板领取人");
////                }
//            log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "：有效期剩余3天的色板提醒任务结束");
//        }
//    }
//
//    /**
//     * 对接人事信息表，将需要的字段信息导入到自己的用户表中，并同步删除离职人员和调离人员
//     */
//    @Async
//    @Scheduled(cron = "0 10 20 * * ?" )
//    public void importUserInfo(){
//        log.info("执行每天用户信息更新任务" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
//        // 将色板信息导入
//        Integer insertInfoResult = tbUserMapper.insertUserInfo();
//        log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "新增" + insertInfoResult + "条数据");
//        Integer deleteResult = tbUserMapper.deleteGoneUser();
//        log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "删除" + deleteResult + "条数据");
//        log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "：用户信息更新任务完成");
//    }
//
//    /**
//     * 同步更新新增用户的角色，即为每个新增的用户赋予角色
//     */
//    @Async
//    @Scheduled(cron = "0 12 20 * * ?" )
//    public void updateNewUserRole(){
//        log.info("执行新增用户添加角色任务" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
//        // 同步更新用户角色信息表
//        Integer insertRoleResult = tbUserRoleMapper.insertUserRoleBySystem();
//        log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "新维护了" + insertRoleResult + "条数据");
//        Integer deleteRoleResult = tbUserRoleMapper.deleteGoneUserRole();
//        log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "删除" + deleteRoleResult + "条数据");
//        log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "：新用户角色添加任务完成");
//    }
//
//    /**
//     * 测试定时任务时间
//     */
//    @Async
//    @Scheduled(cron = "0 0 19 * * ?" )
//    public void test(){
//        log.info("执行测试任务" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
//    }
//}
